package com.etc.dao;

import java.sql.SQLException;
import java.util.HashMap;
import java.util.Iterator;

import javax.sql.rowset.CachedRowSet;

import com.etc.entity.Dept;
import com.etc.entity.Emp;
import com.etc.util.DBUtil;

/**
 * 针对emp的数据访问
 * 
 * @author Administrator
 *
 */
public class EmpDao_HashMap {

	/**
	 * 增加员工
	 * 
	 * @param emp
	 *            员工对象
	 * @return true 操作成功/ false 操作失败
	 */
	public boolean addEmp(Emp emp) {
		if (emp != null) {
			// 向数据库表中插入记录
			String sql = "insert into emp values(?,?,?,?,?)";
			return DBUtil.exUpdate(sql, emp.getEmpNo(), emp.getEmpName(), emp.getJob(), emp.getSalary(),
					emp.getDeptNo());
		}
		return false;
	}

	/**
	 * 删除员工
	 * 
	 * @param empNo
	 *            员工的编号
	 * @return true 操作成功/ false 操作失败
	 */
	public boolean delEmp(String empNo) {
		if (empNo != null) {
			// 删除记录
			String sql = "delete from emp where empNo=?";
			return DBUtil.exUpdate(sql, empNo);
		}
		return false;
	}

	/**
	 * 修改员工信息
	 * 
	 * @param emp
	 *            员工对象
	 * @return true 修改成功/ false 修改失败
	 */
	public boolean updateDept(Emp emp) {
		// sql语句
		String sql = "update emp set empName=? ,job=?,salary=?,deptNo=? where empNo = ?";
		return DBUtil.exUpdate(sql, emp.getEmpName(), emp.getJob(), emp.getSalary(), emp.getDeptNo(), emp.getEmpNo());

	}

	/**
	 * 显示所有员工
	 * 
	 * @return hashMap保存的是员工的信息
	 */
	public HashMap<String, Emp> getEmp() {

		HashMap<String, Emp> hm = new HashMap<String, Emp>();

		// ? 单表记录,如果是多表这个sql语句怎么变?
		String sql = "select empNo,empName,job,salary,deptNo from emp";

		CachedRowSet crs = DBUtil.exQuery(sql);

		try {
			Emp emp = null;
			while (crs.next()) {
				String empNo = crs.getString("empNo");
				String empName = crs.getString("empName");
				String job = crs.getString("job");
				double salary = crs.getDouble("salary");
				int deptNo = crs.getInt("deptNo");
				// 构造一个emp对象
				emp = new Emp(empNo, empName, job, salary, deptNo);

				// 将emp对象添加到hm中
				hm.put(empNo, emp);

			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return hm;

	}

	/**
	 * 根据部门编号查询员工的信息
	 * @param deptNo  部门编号
	 * @return   hashMap保存的是员工的信息
	 */
	public HashMap<String, Emp> getEmpByDeptNo(int deptNo) {

		HashMap<String, Emp> hm = new HashMap<String, Emp>();

		// ? 单表记录,如果是多表这个sql语句怎么变?
		String sql = "select empNo,empName,job,salary,deptNo from emp where deptNo = ?";

		CachedRowSet crs = DBUtil.exQuery(sql,deptNo);

		try {
			Emp emp = null;
			while (crs.next()) {
				String empNo = crs.getString("empNo");
				String empName = crs.getString("empName");
				String job = crs.getString("job");
				double salary = crs.getDouble("salary");
				// 构造一个emp对象
				emp = new Emp(empNo, empName, job, salary, deptNo);

				// 将emp对象添加到hm中
				hm.put(empNo, emp);

			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return hm;

	}
	
	
	
	/**
	 * 根据姓名模糊查询
	 * @param empName_Cons  姓名的关键字
	 * @return   hashMap保存的是员工的信息
	 */
	public HashMap<String, Emp> getEmpByLike(String empName_Cons) {

		HashMap<String, Emp> hm = new HashMap<String, Emp>();

		// ? 单表记录,如果是多表这个sql语句怎么变?
		String sql = "select empNo,empName,job,salary,deptNo from emp where empName like ?";

		CachedRowSet crs = DBUtil.exQuery(sql,"%"+empName_Cons+"%");

		try {
			Emp emp = null;
			while (crs.next()) {
				String empNo = crs.getString("empNo");
				String empName = crs.getString("empName");
				String job = crs.getString("job");
				double salary = crs.getDouble("salary");
				int deptNo = crs.getInt("deptNo");
				// 构造一个emp对象
				emp = new Emp(empNo, empName, job, salary, deptNo);

				// 将emp对象添加到hm中
				hm.put(empNo, emp);

			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return hm;

	}

}
